import {reactive, ref} from "vue";
import {TableData} from "axios";
import {BizQuery} from "/@/fly/biz/BizModel";


/**
 * 应用信息 查询参数
 *
 * @author 朔风
 * @date 2025-11-23 19:11:13
 */
export interface AppInfoQuery extends BizQuery {
    /** 平台ID */
    platformId?: string,
    /** 应用名称 */
    appTitle?: string,
    /** 开发语言 */
    devLang?: string,
    /** 是否可删除: Y-是;N-否 */
    validRemove?: string,
}


/**
 * 应用信息 向后端传值对象
 *
 * @author 朔风
 * @date 2025-11-22 22:33:23
 */
export interface AppInfo {
    /** appID */
    id?: string,
    /** 平台ID */
    platformId?: string,
    /** 平台名称 */
    platformTitle?: string,
    /** app秘钥 */
    appSecret?: string,
    /** 应用标识： 例如： TOPIC-ADMIN */
    appCode?: string,
    /** 应用名称 */
    appTitle?: string,
    /** 应用名称简称 */
    appAsTitle?: string,
    /** 应用类型: BACK-后端;VIEW-前端 */
    appClazz?: string,
    /** 开发语言 */
    devLang?: string,
    /** 访问地址 */
    askUri?: string,
    /** 部署IP */
    deployIp?: string,
    /** 部署端口 */
    deployPort?: string,
    /** 图标 */
    iconIco?: string,
    /** 职能代码: OSS */
    funcCode?: string,
    /** 职能名称: 文件上传 */
    funcTitle?: string,
    /** 是否可删除: Y-是;N-否 */
    validRemove?: string,
    /** 有效标志: Y-是;N-否 */
    validFlag?: string,
    /** 备注 */
    remarks?: string
}


export default function useAppInfoBuilder() {

    /**
     * 实例化查询数据对象
     */
    const appInfoParams = reactive<AppInfoQuery>({
        page: 1,
        limit: 10,
        /** 平台ID */
        platformId: '',
        /** 应用名称 */
        appTitle: '',
        /** 开发语言 */
        devLang: '',
        /** 是否可删除: Y-是;N-否 */
        validRemove: ''
    });

    /**
     * 分页数据
     */
    const tableData = reactive<TableData<AppInfo>>({
        loading: false,
        total: 0,
        rows: []
    });


    /**
     * 分页数据
     */
    const tableAppInfoData = reactive<TableData<AppInfo>>({
        loading: false, /* 是否显示加载框 */
        total: 0, /* 数据总条数 */
        rows: [], /* 展示的数据 */
    });


    /**
     * 实例化对象
     */
    const appInfo = reactive<AppInfo>({
        /** appID */
        id: '',
        /** 平台ID */
        platformId: '',
        /** 平台名称 */
        platformTitle: '',
        /** app秘钥 */
        appSecret: '',
        /** 应用标识： 例如： FLY-ADMIN */
        appCode: '',
        /** 应用名称 */
        appTitle: '',
        /** 应用名称简称 */
        appAsTitle: '',
        /** 应用类型: BACK-后端;VIEW-前端 */
        appClazz: '',
        /** 开发语言 */
        devLang: '',
        /** 访问地址 */
        askUri: '',
        /** 部署IP */
        deployIp: '',
        /** 部署端口 */
        deployPort: '',
        /** 图标 */
        iconIco: '',
        /** 职能代码: OSS */
        funcCode: '',
        /** 职能名称: 文件上传 */
        funcTitle: '',
        /** 是否可删除: Y-是;N-否 */
        validRemove: '',
        /** 有效标志: Y-是;N-否 */
        validFlag: '',
        /** 备注 */
        remarks: ''
    });


    /**
     * 分页列表展示项
     */
    const appInfoColumns = [
        {key: 'appTitle', colWidth: '', title: '应检尽检核酸采样点名称', type: 'text', isCheck: true},
        {key: 'devLang', colWidth: '', title: '详细地址', type: 'text', isCheck: true},
        {key: 'phone', colWidth: '', title: '采样点联系电话', type: 'text', isCheck: true},
        {key: 'time', colWidth: '', title: '开放时间', type: 'text', isCheck: true},
        {key: 'isSupport', colWidth: '', title: '是否支持24小时核酸检测', type: 'text', isCheck: true},
        {key: 'image', colWidth: '', width: '70', height: '40', title: '图片描述', type: 'image', isCheck: true},
    ];


    const searchField = [
        {
            label: '所属平台',
            prop: 'platformId',
            placeholder: '请选择',
            required: false,
            type: 'select',
            options: [
                {label: 'NEXT', value: 'NEXT'},
                {label: 'PLATFORM', value: 'PLATFORM'},
            ]
        },
        {label: '应用名称', prop: 'appTitle', placeholder: '', required: false, type: 'input'},

        {
            label: '开发语言',
            prop: 'devLang',
            placeholder: '请选择',
            required: false,
            type: 'select',
            options: [
                {label: 'Java', value: 'Java'},
                {label: 'Vue', value: 'Vue'},
                {label: 'Python', value: 'Python'},
            ]
        },
    ]

    return {
        appInfoParams,
        searchField,
        tableData,
        tableAppInfoData,
        appInfo,
        appInfoColumns
    }


}

